package com.ys.homework;

import java.util.Scanner;

/**
 * @author CodeYang
 * @Description TODO
 * @Date 2020/12/10 14:15
 */
public class 双色球练习4 {
    public static void main(String[] args) {
        // 下注总费用
        int totalMoney = 0;
        // 双色球单价,每注2元
        int price = 2;
        // 购买彩票注数
        int count = 0;
        // 标志是否购买
        boolean isBuy = false;
        // 存储双色球号
        int[] num = null;
        Scanner input = new Scanner(System.in);

        do {
            System.out.println("********欢迎进入双色球彩票系统********");
            System.out.println("\t1.购买彩票");
            System.out.println("\t2.查看开奖");
            System.out.println("\t3.退出");
            System.out.println("**********************************");
            System.out.println("请选择菜单");
            int choose = input.nextInt();
            switch (choose) {
                case 1:
                    System.out.println("[双色球彩票系统>购买彩票]");
                    System.out.println("您需要下多少注?:");
                    count = input.nextInt();
                    // 总下注金额: = 下注数量 * 单价
                    totalMoney = count * price;

                    //开始选号:(6个红色球号和1个蓝色球号) 供选择
                    num = new int[7];
                    for (int i = 0; i < num.length; i++) {
                        // 红色球 数字
                        int red;
                        // 蓝色球 数字
                        int bule;

                        if (i < num.length - 1) {
                            System.out.println("请输入6个红色球号(数字为1-33),第[" + (i + 1) + "]个红色球号为:");
                            red = input.nextInt();
                            // 将选择的 红色球号 存入 数组中
                            num[i] = red;
                        } else {
                            System.out.println("请输入第1个蓝色球号(数字为1-16):");
                            bule = input.nextInt();
                            // 蓝色球号 选择存入数组
                            num[i] = bule;
                        }

                    }
                    // 输出已经买好的彩票星星:
                    System.out.println("您一个买了[" + count + "]注,共需支付[" + totalMoney + "]元,所选号为:");
                    for (int i1 : num) {
                        System.out.print(i1 + "\t");
                    }
                    //标志已经购买了 双色球
                    isBuy = true;
                    System.out.println();
                    break;
                case 2:
                    System.out.println("[双色球彩票系统>查看开奖]");
                    if (isBuy) {
                        //判断是否购买了彩票,开奖之后,又需要重新购买
                        isBuy = false;
                        int[] luckNum = getLuckNum();
                        // 输出 顾客购买的号码
                        System.out.print("已买彩票号为:");
                        for (int i : num) {
                            System.out.print(i + "\t");
                        }
                        System.out.print("当期中将号码:");
                        // 输出当前期的中将号码
                        for (int i : luckNum) {
                            System.out.print(i + "\t");
                        }
                        System.out.println();
                        //获取 获奖等级
                        int result = getCompareResult(num, luckNum);
                        if (1 == result) {
                            System.out.println("[一等奖],恭喜你!!!,共下了[" + count + "]注,投资[" + totalMoney + "],获奖[" + (500 * count) + "]万元");
                        } else if (2 == result) {
                            System.out.println("[二等奖],恭喜你!!!,共下了[" + count + "]注,投资[" + totalMoney + "],获奖[" + (400 * count) + "]万元");
                        } else if (3 == result) {
                            System.out.println("[三等奖],恭喜你!!!,共下了[" + count + "]注,投资[" + totalMoney + "],获奖[" + (300 * count) + "]万元");
                        } else if (4 == result) {
                            System.out.println("[四等奖],恭喜你!!!,共下了[" + count + "]注,投资[" + totalMoney + "],获奖[" + (200 * count) + "]万元");
                        } else if (5 == result) {
                            System.out.println("[五等奖],恭喜你!!!,共下了[" + count + "]注,投资[" + totalMoney + "],获奖[" + (100 * count) + "]万元");
                        } else if (6 == result) {
                            System.out.println("[六等奖],恭喜你!!!,共下了[" + count + "]注,投资[" + totalMoney + "],获奖[" + (5 * count) + "]元");
                        } else {
                            System.out.println("[望再街再厉],恭喜你!!!,共下了[" + count + "]注,投资[" + totalMoney + "],获奖[" + (0 * count) + "]元");
                        }
                    }
                    break;
                case 3:
                    System.out.println("谢谢使用");
                    break;
                default:
                    break;
            }
        } while (true);
    }

    /**
     * 计算火箭等级
     *
     * @param num     顾客的彩票号
     * @param luckNum 随机生成的中奖号码
     * @return
     */
    private static int getCompareResult(int[] num, int[] luckNum) {
        int luckLevel = 0;
        //红球想等数量
        int redEqualCount = 0;
        //蓝球想等数量
        int buleEqualCount = 0;
        //将 顾客号码 与 开奖号码做对比
        for (int i = 0; i < num.length; i++) {
            //比较红球
            if (i < num.length - 1) {
                //比较红球 ---> 比较自己的彩票红球号与中将红球号进行比较
                int r = num[i];
                for (int j = 0; j < luckNum.length; j++) {
                    if (r == luckNum[j]) {
                        redEqualCount++;
                    }
                }
            } else {
                // 比较蓝球 ---> 自己的彩票的蓝色球号与中将的蓝球号进行比较
                if (num[num.length - 1] == luckNum[luckNum.length - 1]) {
                    buleEqualCount++;
                }
            }
            //得出结果
            if (redEqualCount == 6 && buleEqualCount == 1) {
                // 一等奖,红球与蓝球相同
                luckLevel = 1;
            } else if (redEqualCount == 6) {
                // 二等奖 6 个红色相同
                luckLevel = 2;
            } else if (redEqualCount == 5 && buleEqualCount == 1) {
                // 三等将  5红相同和1蓝相同
                luckLevel = 3;
            } else if (redEqualCount == 5 || (redEqualCount == 4 && buleEqualCount == 1)) {
                // 四等奖 5 红同 或 4红同 和 1蓝同
                luckLevel = 4;
            } else if (redEqualCount == 4 || (redEqualCount == 4 && buleEqualCount == 1)) {
                // 5等奖 4红 同 或者 3红同+1蓝同
                luckLevel = 5;
            } else if (buleEqualCount == 1) {
                //六等奖
                luckLevel = 6;
            }

        }
        return luckLevel;
    }

    /**
     * 获得一个 幸运号码--->生成中将号码
     *
     * @return int[] 中将号码
     */
    private static int[] getLuckNum() {
        int luckNum[] = new int[7];
        for (int i = 0; i < luckNum.length; i++) {
            if (i < luckNum.length - 1) {
                // 生成 1- 33 之间的随机数
                luckNum[i] = (int) (Math.random() * 33) + 1;
            } else {
                // 生成 1-16 的随机数
                luckNum[i]=(int)(Math.random()*16)+1;
            }
        }
        return luckNum;
    }
}
